home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / sharewar / slunec / app / httrack.exe / {app} / src_win / WinHTTrack / DialogHtmlHelp.cpp < prev    next >
C/C++ Source or Header  |  2000-06-18  |  7KB  |  268 lines

  1. // DialogHtmlHelp.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "DialogHtmlHelp.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. extern HICON httrack_icon;
  15.  
  16. /////////////////////////////////////////////////////////////////////////////
  17. // CDialogHtmlHelp dialog
  18.  
  19.  
  20. CDialogHtmlHelp::CDialogHtmlHelp(CWnd* pParent /*=NULL*/)
  21.     : CDialog(CDialogHtmlHelp::IDD, pParent)
  22. {
  23.   page="";
  24.     //{{AFX_DATA_INIT(CDialogHtmlHelp)
  25.     //}}AFX_DATA_INIT
  26. }
  27.  
  28.  
  29. void CDialogHtmlHelp::DoDataExchange(CDataExchange* pDX)
  30. {
  31.     CDialog::DoDataExchange(pDX);
  32.     //{{AFX_DATA_MAP(CDialogHtmlHelp)
  33.     //}}AFX_DATA_MAP
  34. }
  35.  
  36.  
  37. BEGIN_MESSAGE_MAP(CDialogHtmlHelp, CDialog)
  38.     //{{AFX_MSG_MAP(CDialogHtmlHelp)
  39.     ON_WM_SIZE()
  40.     ON_WM_CREATE()
  41.     ON_BN_CLICKED(IDC_BACK, OnBack)
  42.     ON_BN_CLICKED(IDC_FORWARD, OnForward)
  43.     ON_BN_CLICKED(IDC_STOP, OnStop)
  44.     ON_BN_CLICKED(IDC_RELOAD, OnReload)
  45.     ON_BN_CLICKED(IDC_HOME, OnHome)
  46.     ON_BN_CLICKED(ID_FILE_PRINT, OnFilePrint)
  47.     ON_WM_CLOSE()
  48.     //}}AFX_MSG_MAP
  49.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  50.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  51.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  52.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  53.     ON_COMMAND(ID_BUTTON_HOME,OnHome)
  54. END_MESSAGE_MAP()
  55.  
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CDialogHtmlHelp message handlers
  58.  
  59. BOOL CDialogHtmlHelp::OnInitDialog() 
  60. {
  61.     CDialog::OnInitDialog();
  62.   SetIcon(httrack_icon,false);
  63.   SetIcon(httrack_icon,true);
  64.   EnableToolTips(true);     // TOOL TIPS
  65.   SetForegroundWindow();   // yop en premier plan!
  66.  
  67.   strcpy(home,"file://");
  68.   {
  69.     char* a=home+strlen(home);
  70.     strcat(home,AfxGetApp()->m_pszHelpFilePath);
  71.     a = home + strlen(home) -1;
  72.     while( (*a!='\\') && ((int) a > (int) home) ) a--;
  73.     if (*a=='\\') {
  74.       *(a+1)='\0';
  75.     }
  76.     strcat(home,"HelpHtml\\");
  77.     strcpy(home_dir,home);
  78.     strcat(home,"index.html");
  79.   }
  80.  
  81.   // crΘer
  82.   if (m_page.CreateFromStatic(IDC_HTMLVIEW, this)) {
  83.     m_page.SetToolBar(false);
  84.     m_page.SetMenuBar(false);
  85.     m_page.SetStatusBar(false);
  86.     m_page.SetRegisterAsBrowser(false);
  87.     m_page.SetFullScreen(false);
  88.     if (page.GetLength()==0)
  89.       OnHome();
  90.     else
  91.       Go(page);
  92.     UpdateWindow();
  93.   } else {
  94.     EndDialog(IDCANCEL);
  95.     if (!ShellExecute(NULL,"open",home+strlen("file://"),"","",SW_RESTORE))
  96.       AfxMessageBox(LANG(LANG_DIAL1));
  97.   }
  98.   return TRUE;  
  99. }
  100.  
  101. // Resize
  102. void CDialogHtmlHelp::OnSize(UINT nType, int cx, int cy) 
  103. {
  104.   CDialog::OnSize(nType, cx, cy);
  105.  
  106.   HWND ip = ::GetDlgItem(this->m_hWnd,IDC_HTMLVIEW);
  107.   if (ip) {
  108.     int w,h;
  109.     RECT rect;
  110.     ::GetWindowRect(ip,&rect);
  111.     // screen coord -> client coord
  112.     POINT a,b;
  113.     a.x=rect.left; a.y=rect.top; b.x=rect.right; b.y=rect.bottom;
  114.     ::ScreenToClient(this->m_hWnd,&a); ::ScreenToClient(this->m_hWnd,&b);
  115.     rect.left=a.x; rect.top=a.y; rect.right=b.x; rect.bottom=b.y;
  116.     w = max(cx - rect.left,320);
  117.     h = max(cy - rect.top,200);
  118.     ::SetWindowPos(ip,NULL,0,0,w,h,SWP_NOZORDER|SWP_NOMOVE|SWP_NOOWNERZORDER);
  119.     //base.OnSizeCallback(this,nType,cx,cy);
  120.   }
  121. }
  122.  
  123. int CDialogHtmlHelp::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  124. {
  125.     if (CDialog::OnCreate(lpCreateStruct) == -1)
  126.         return -1;
  127.  
  128.   /*
  129.   if (!m_wndToolBar.Create(this))
  130.         return -1;      // fail to create
  131.   if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  132.         return -1;      // fail to create
  133.  
  134.   // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  135.     m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  136.         CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  137.   */
  138.     
  139.     return 0;
  140. }
  141.  
  142. // help de l'help..
  143. // Appel aide
  144. BOOL CDialogHtmlHelp::OnHelpInfo2() {
  145.   return OnHelpInfo(NULL);
  146. }
  147.  
  148. BOOL CDialogHtmlHelp::OnHelpInfo(HELPINFO* dummy) 
  149. {
  150.   return true;
  151. }
  152.  
  153.  
  154. // Home
  155. void CDialogHtmlHelp::OnHome() {
  156.   m_page.Navigate2(home);
  157.   m_page.ShowWindow(SW_SHOW);
  158.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  159. }
  160.  
  161. void CDialogHtmlHelp::Go(CString st) {
  162.   if (st.Left(7)!="http://") {
  163.     char tempo[1024];
  164.     strcpy(tempo,home_dir);
  165.     strcat(tempo,st);
  166.     m_page.Navigate2(tempo);
  167.   } else
  168.     m_page.Navigate2(st);
  169.   m_page.ShowWindow(SW_SHOW);
  170.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  171. }
  172.  
  173. void CDialogHtmlHelp::OnBack() 
  174. {
  175.   m_page.GoBack();
  176.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  177. }
  178.  
  179. void CDialogHtmlHelp::OnForward() 
  180. {
  181.   m_page.GoForward();
  182.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  183. }
  184.  
  185. void CDialogHtmlHelp::OnStop() 
  186. {
  187.   m_page.Stop();
  188.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  189. }
  190.  
  191. void CDialogHtmlHelp::OnReload() 
  192. {
  193.   m_page.Refresh();
  194.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  195. }
  196.  
  197. void CDialogHtmlHelp::OnFilePrint() 
  198. {
  199.   this->GetDlgItem(IDC_HTMLVIEW)->SendMessage(WM_COMMAND,ID_FILE_PRINT,NULL);
  200.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  201. }
  202.  
  203.  
  204. // ------------------------------------------------------------
  205. // TOOL TIPS
  206. //
  207. // ajouter dans le .cpp:
  208. // remplacer les deux Wid1:: par le nom de la classe::
  209. // dans la message map, ajouter
  210. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  211. // dans initdialog ajouter
  212. // EnableToolTips(true);     // TOOL TIPS
  213. //
  214. // ajouter dans le .h:
  215. // char* GetTip(int id);
  216. // et en generated message map
  217. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  218. BOOL CDialogHtmlHelp::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  219. {
  220.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  221.   UINT nID =pNMHDR->idFrom;
  222.   if (pTTT->uFlags & TTF_IDISHWND)
  223.   {
  224.     // idFrom is actually the HWND of the tool
  225.     nID = ::GetDlgCtrlID((HWND)nID);
  226.     if(nID)
  227.     {
  228.       char* st=GetTip(nID);
  229.       if (st != "") {
  230.         pTTT->lpszText = st;
  231.         pTTT->hinst = AfxGetResourceHandle();
  232.         return(TRUE);
  233.       }
  234.     }
  235.   }
  236.   return(FALSE);
  237. }
  238. char* CDialogHtmlHelp::GetTip(int ID)
  239. {
  240.   switch(ID) {
  241.     case IDCANCEL:   return LANG(LANG_B3); /*"Cancel","Annuler");*/ break;
  242.     case IDOK:       return LANG(LANG_B4); /*"Add this filter","Ajouter cette rΦgle");*/ break;
  243.   }
  244.   return "";
  245. }
  246. // TOOL TIPS
  247. // ------------------------------------------------------------
  248.  
  249.  
  250. BOOL CDialogHtmlHelp::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  251. {
  252.     // TODO: Add your specialized code here and/or call the base class
  253.  
  254.   dwStyle|=(WS_OVERLAPPEDWINDOW);
  255.   dwStyle&=~(WS_CHILD);
  256.   pParentWnd=NULL;
  257.     return CDialog::Create(IDD, pParentWnd);
  258.   //ModifyStyleEx(WS_EX_TOPMOST,0);
  259.   //SetWindowPos(&wndBottom,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  260. }
  261.  
  262. /* Auto-destruction! */
  263. void CDialogHtmlHelp::OnClose() 
  264. {
  265.     ///CDialog::OnClose();
  266.     int r=CDialog::DestroyWindow();
  267. }
  268.